#!/usr/bin/python
# -*-coding:UTF-8 -*-

# ========================
# @Time  : 2021/1/27
# @Author: Sunny
# ========================

from functools import partial
#在python的内置模块functools提供了很多有用的功能，其中一个就是偏函数

#作用
#当函数的参数个数太多，需要简化是，使用functools.partial可以创建一个新的函数，这个新函数可以固定住原函数的部分参数，从而在调用时更简单

#获取数据中大于5的数据
li1 =[1,2,3,11,22,33]
li2 =[2,3,4,22,33]
li3 = [3,4,5,33,44,55]

# res1 = filter(lambda x:x>5,li1)
# res2 = filter(lambda x:x>5,li2)
# res3 = filter(lambda x:x>5,li3)
# print(list(res1))
# print(list(res2))
# print(list(res3))

#案例一
#第一个参数是函数filter，第二个参数函数的参数(需要固定住的参数)，生成了一个函数filter2，新函数会把之前固定的参数默认作为一个新参数传进去，而我们只需要传可迭代参数即可
filter2 =partial(filter,lambda x:x>5)
#filter2是个一个类型为过滤器的偏函数
print(filter2)
print(list(filter2(li1)))
print(list(filter2(li2)))
print(list(filter2(li3)))



#案例二
import requests

data1 = requests.get(url='http://www.baidu.com',params={'kw':123},header={'asss':1212})
data2 = requests.get(url='http://www.baidu.com',params={'kw':124},header={'asss':1212})
data3 = requests.get(url='http://www.baidu.com',params={'kw':125},header={'asss':1212})
data4 = requests.get(url='http://www.baidu.com',params={'kw':126},header={'asss':1212})

get = partial(requests.get,url='http://www.baidu.com',header={'asss':1212})
res1 = get(params={'kw':123})
res2 = get(params={'kw':123})
res3 = get(params={'kw':123})